Spreadsheet programs are widely-used application programs that run on personal computers. Spreadsheet programs are commonly used for budgets, forecasting, and other finance-related tasks. In a spreadsheet program, data and formulas are entered in ledger-like forms for analysis, tracking, planning, or evaluations of the impacts of real or proposed changes on data.
Spreadsheet programs use rows and columns of cells for the display of data. Depending on the program, a single spreadsheet may contain thousands of cells. Some spreadsheet programs can also link one spreadsheet to another spreadsheet that contains related information and can update data in linked spreadsheets automatically. Spreadsheet programs may also include macro facilities, and some can be used for creating and sorting databases. For printed output, spreadsheet programs usually provide graphing capabilities and a variety of formatting options for both printed pages and text, numeric values, and captions and legends in graphs.
Each row and column in a spreadsheet is unique, so each cell is uniquely identified. Typically, each column is identified by a letter, and each row is identified by a number. Thus, the cell located at the intersection of column A and row 1 is identified as cell A1. Each cell is displayed as a rectangular space that can hold text, numerical data, or a formula that uses parameters, which may comprise data in other cells, to calculate a desired result.
As with other application programs, a computer user may add, delete, or change data within each cell of the spreadsheet. Also, spreadsheet programs allow users to alter the format and layout of the spreadsheet by, among other things, adding and deleting rows, columns, or groups of cells within the spreadsheet. When a modified spreadsheet is saved by the user, a new spreadsheet is created that includes all data and layout modifications. When saved, the "image" of the new spreadsheet, i.e., a copy of the modified spreadsheet, is stored in a memory storage device on the user's computer system.
In today's business environment, multiple computers are commonly linked via a network. A network is a group of computers and associated devices that are interconnected via communication facilities. A network can involve permanent connections, such as cables, or temporary connections made through telephone or other communications links. A network can be as small as a local area network (LAN) consisting of a few computers, printers, and other devices, or it can consist of many small and large computers distributed over a vast geographic area. Computer networks exist to provide computer users with the means of communicating and transferring information electronically. Some types of communications are simple user-to-user messages. Other types of computer communications can involve several computers and the sharing of workloads or cooperative efforts in performing a task.
Thus, a network allows users of other computers to access a spreadsheet that is stored in a memory storage device of a server, i.e., a particular computer on a local area network that makes resources available to other computers on the network. The computer on which the spreadsheet is permanently stored is called the server and each computer used to access the spreadsheet provided by the server is called a client.
Although multiple users can each access the spreadsheet on a respective client computer, no capability currently exists to allow multiple users to simultaneously edit the spreadsheet such that the modifications made by a user are merged with the modifications made by each of the other users. To illustrate, consider two users of computers linked to a network. User 1 and user 2 simultaneously access the spreadsheet stored on the server. Thus, a copy of the spreadsheet is loaded into each user's computer such that each user can make independent changes to the spreadsheet. For the purposes of this example, assume the old spreadsheet, i.e., the spreadsheet stored on the server that was accessed by each user, includes the number "5" in cell A1.
In the copy of the spreadsheet on user 1's computer, user 1 changes the contents of cell A1 from "5" to "10". User 1 then saves the spreadsheet containing the new data to the server. User 1's modified spreadsheet may also be saved on the user's computer as well as on the server.
User 2 simultaneously accesses the old spreadsheet and adds the formula "A1+10" in cell A2. Therefore, user 2 has created a formula in cell A2 that user 2 believes will yield the numerical result "15" because the old spreadsheet to which user 2 has access contains the numeral "5" in cell A1. User 2 then saves the changes to the modified spreadsheet to the server and, if desired, on user 2's computer.
Thus, when saved to the server, the copy of the spreadsheet as modified by user 2 overwrites the spreadsheet as modified by user 1. The new spreadsheet stored on the server, after both users have made their changes, consists of user 2's spreadsheet because user 2 was the last user to save the spreadsheet to the server. Therefore, the modified data entered in cell A1 by user 1 is destroyed and is not incorporated into the spreadsheet of user 2. Thus, the result of user 2's formula in cell A2 should be "20", because the contents of cell A1 were changed to "10" by user 1, but the actual result of the formula in the new spreadsheet is "15".
Therefore, it should be understood that although editing and modification of a spreadsheet by multiple users is currently permitted, the capability to combine and incorporate of the modifications made by each user into a new spreadsheet is not provided.
Several current spreadsheet application programs provide "versioning" capabilities in which copies of old spreadsheets, or portions of old spreadsheets, are saved and can be recalled. Therefore, versioning allows a user to access a spreadsheet that was saved at various points in time. However, spreadsheet application programs that provide versioning capabilities do not provide for the incorporation, or merging, of multiple user's changes into a single spreadsheet.
Current programs also do not provide for resolving conflicting changes made by users. Conflicting changes are those changes that cannot exist on the same spreadsheet at the same time. For example, when a change made by user 1 is to add data to a cell in row 2 and a change made by user 2 is to delete row 2, it is impossible for the two changes to exist in the same spreadsheet simultaneously. Current spreadsheet application programs do not provide the capability for concurrent editing of a spreadsheet and, therefore, necessarily do not provide for the resolution of conflicting changes made by multiple users.